home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / 68hc11 / smallc11.arc / CCDEF.C < prev    next >
Text File  |  1988-07-01  |  3KB  |  166 lines

  1. /*
  2. ** Small-C Compliler Version 2.0
  3. **
  4. ** Copyright 1982 J. E. Hendrix
  5. **
  6. ** Macro Definitions
  7. */
  8.  
  9. /*$NESTCMNT*/            /* allow nested comments    */
  10. /*$ZERO*/
  11.  
  12. #define YES    1
  13. #define NO    0
  14.  
  15. /*** compile options*/
  16.  
  17. #define PHASE2            /* 2nd & later compiles     */
  18. #define SEPARATE        /* compile separately        */
  19. #define NOCCARGC        /* no calls to CCARGC        */
  20. #define CMD_LINE        /* command line run options    */
  21. #define TAB        32    /* put out tabs of this value    */
  22.  
  23. /*** machine dependent parameters*/
  24.  
  25. #define BPW    2        /* # of bytes per word        */
  26. #define LBPW    1
  27. #define SBPC    1        /* stack bytes per character    */
  28. #define ERRCODE 7        /* op system return code    */
  29.  
  30. /*** symbol table format*/
  31.  
  32. #define IDENT     0
  33. #define TYPE     1
  34. #define CLASS     2
  35. #define OFFSET     3
  36. #define NAME     5
  37. #define OFFSIZE (NAME-OFFSET)
  38. #define SYMAVG    10
  39. #define SYMMAX    14
  40.  
  41. /*** symbol table parameters*/
  42.  
  43. #define NUMLOCS   25
  44. #define STARTLOC  symtab
  45. #define ENDLOC     (symtab+(NUMLOCS*SYMAVG))
  46. #define NUMGLBS   180
  47. #define STARTGLB  ENDLOC
  48. #define ENDGLB     (ENDLOC+((NUMGLBS-1)*SYMMAX))
  49. #define SYMTBSZ   2770    /* NUMLOCS*SYMAVG + NUMGLBS*SYMMAX */
  50.  
  51. /*** System wide name size (for symbols)*/
  52.  
  53. #define NAMESIZE 9
  54. #define NAMEMAX  8
  55.  
  56. /*** possible entries for "IDENT"*/
  57.  
  58. #define LABEL     0
  59. #define VARIABLE 1
  60. #define ARRAY     2
  61. #define POINTER  3
  62. #define FUNCTION 4
  63.  
  64. /*
  65. ** possible entries for "TYPE"
  66. **    low order 2 bits make type unique within length
  67. **    high order bits give length of object
  68. */
  69. /*    LABEL    0 */
  70.  
  71. #define CCHAR    (1<<2)
  72. #define CINT    (BPW<<2)
  73.  
  74. /*** possible entries for "CLASS"*/
  75. /*    LABEL      0 */
  76.  
  77. #define STATIC      1
  78. #define AUTOMATIC 2
  79. #define EXTERNAL  3
  80.  
  81. /*** "switch" table*/
  82.  
  83. #ifdef PHASE2
  84. #define SWSIZ    (2*BPW)
  85. #define SWTABSZ (150*SWSIZ)    /* changed from 25*SWSIZ  -hm 22-06-88 */
  86. #else
  87. #define SWSIZ     4
  88. #define SWTABSZ 100
  89. #endif
  90.  
  91. /*** "while" statement queue*/
  92.  
  93. #define WQTABSZ  30
  94. #define WQSIZ      3
  95. #define WQMAX    (wq+WQTABSZ-WQSIZ)
  96.  
  97. /*** entry offsets in while queue*/
  98.  
  99. #define WQSP    0
  100. #define WQLOOP    1
  101. #define WQEXIT    2
  102.  
  103. /*** literal pool*/
  104.  
  105. #define LITABSZ 1500
  106. #define LITMAX    (LITABSZ-1)
  107.  
  108. /*** input line*/
  109.  
  110. #define LINEMAX  128    /* from 80 to 128 -hm */
  111. #define LINESIZE 129    /* from 81 to 129 -hm */
  112.  
  113. /*** output staging buffer size*/
  114.  
  115. #define STAGESIZE   800
  116. #define STAGELIMIT  (STAGESIZE-1)
  117.  
  118. /*** macro (define) pool*/
  119.  
  120. #ifdef HASH
  121. #define MACNBR     90
  122. #define MACNSIZE 990   /* 90*(NAMESIZE+2) */
  123. #define MACNEND  (macn+MACNSIZE)
  124. #define MACQSIZE 450   /* 90*5 */
  125. #else
  126. #define MACQSIZE 950
  127. #endif
  128. #define MACMAX    (MACQSIZE-1)
  129.  
  130. /*** statement types*/
  131.  
  132. #define STIF      1
  133. #define STWHILE   2
  134. #define STRETURN  3
  135. #define STBREAK   4
  136. #define STCONT      5
  137. #define STASM      6
  138. #define STEXPR      7
  139. #define STDO      8 /* compile "do" logic */
  140. #define STFOR      9 /* compile "for" logic */
  141. #define STSWITCH 10 /* compile "switch/case/default" logic */
  142. #define STCASE     11
  143. #define STDEF     12
  144.  
  145. /*    equates for the operator array    */
  146.  
  147. #define OR    0
  148. #define XOR    1
  149. #define AND    2
  150. #define EQ    3
  151. #define NE    4
  152. #define ULE    5
  153. #define LE    5
  154. #define UGE    6
  155. #define GE    6
  156. #define ULT    7
  157. #define LT    7
  158. #define UGT    8
  159. #define GT    8
  160. #define ASR    9
  161. #define ASL    10
  162. #define ADD    11
  163. #define SUB    12
  164. #define MULT    13
  165. #define DIV    14
  166. #define MOD    15